const app = getApp();

Page({
  data: {
    userInfo: {},    // 用户信息
    hasPhone: false  // 是否绑定手机号
  },

  onLoad() {
    this.checkLoginStatus();
  },

  onShow() {
    // 每次显示页面都刷新用户信息
    this.checkLoginStatus();
  },

  /**
   * 检查本地登录状态
   */
  checkLoginStatus() {
    const token = wx.getStorageSync('token');
    const userInfo = wx.getStorageSync('userInfo');

    if (token && userInfo) {
      // 已登录：更新状态
      this.setData({
        userInfo: userInfo,
        hasPhone: !!userInfo.phoneMasked  // 根据本地缓存判断手机号状态
      });
    } else {
      // 未登录：跳转到登录页
      wx.redirectTo({ url: '/pages/login/login' });
    }
  },

  /**
   * 处理手机号授权
   */
  handleGetPhoneNumber(e) {
    const { encryptedData, iv, errMsg } = e.detail;
    const token = wx.getStorageSync('token');

    // 1. 判断用户是否授权
    if (errMsg !== 'getPhoneNumber:ok') {
      wx.showToast({
        title: `授权失败：${errMsg}`,
        icon: 'none',
        duration: 3000
      });
      return;
    }

    // 2. 显示加载中
    wx.showLoading({ title: '绑定中...' });

    // 3. 获取新的code（避免过期）
    wx.login({
      success: (res) => {
        if (res.code) {
          // 4. 调用后端接口绑定手机号
          this.callBindPhoneApi(res.code, encryptedData, iv, token);
        } else {
          wx.hideLoading();
          wx.showToast({
            title: '获取凭证失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        wx.showToast({
          title: `登录接口调用失败：${err.errMsg}`,
          icon: 'none'
        });
      }
    });
  },

  /**
   * 调用后端绑定手机号接口
   */
  callBindPhoneApi(code, encryptedData, iv, token) {
    wx.request({
      url: app.globalData.baseUrl + '/api/auth/wechat/login',
      method: 'POST',
      header: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + token
      },
      data: {
        code: code,
        encryptedData: encryptedData,
        iv: iv,
        avatarUrl: this.data.userInfo.avatarUrl
      },
      success: (res) => {
        wx.hideLoading();
        const resp = res.data;
        
        if (resp.code === 200 && resp.data) {
          // 绑定成功：更新状态
          const user = resp.data.user;
          this.setData({
            userInfo: user,
            hasPhone: !!user.phoneMasked
          });
          // 更新本地缓存
          wx.setStorageSync('userInfo', user);
          wx.showToast({ title: '手机号绑定成功' });
        } else {
          wx.showToast({
            title: `绑定失败：${resp.msg || '系统错误'}`,
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        wx.showToast({
          title: `接口调用失败：${err.errMsg}`,
          icon: 'none'
        });
      }
    });
  },

  /**
   * 退出登录
   */
  handleLogout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除缓存
          wx.removeStorageSync('token');
          wx.removeStorageSync('userInfo');
          // 跳转到登录页
          wx.redirectTo({ url: '/pages/login/login' });
        }
      }
    });
  }
});
